package com.zm.study.common;

import com.google.common.base.Strings;

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class CurrencyUtil {


    /**
     * 元转分
     *
     * @param yuan
     * @return
     */
    public static String yuan2cent(String yuan) {
        try {
            return String.format("%.0f", Double.parseDouble(yuan) * 100);
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 元转分
     *
     * @param yuan
     * @return
     */
    public static String yuan2cent(double yuan) {
        try {
            return String.format("%.0f", yuan * 100);
        } catch (Exception e) {
            return "";
        }
    }


    /**
     * 格式化金额
     *
     * @param amount
     * @return
     */
    public static String formatDouble(double amount) {
        DecimalFormat percentageDecimalFormat = new DecimalFormat("##.##");
        try {
            return percentageDecimalFormat.format(amount);
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 金额校验，将金额字符串转换成标准格式,精度为小数点后2位。
     *
     * @param input 输入金额
     * @return 输出金额
     */
    public static double checkAmount(String input) {
        try {
            double amount = Double.parseDouble(input);
            if (amount <= 0.0)
                return 0.0;

            double ret = amount * 100;
            long itemp = Math.round(ret);
            ret = itemp;
            ret = ret / 100;
            return ret;
        } catch (Exception e) {
            return 0.0;
        }
    }

    /**
     * 金额单位由分转为元，精确到分
     *
     * @param amount
     * @return
     */
    public static String divideHundred(String amount) {
        if (Strings.isNullOrEmpty(amount)) {
            return "";
        }
        return ((new BigDecimal((String) amount))).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toString();
    }

    /**
     * 金额单位由分转为元，精确到分
     *
     * @param amount
     * @return
     */
    public static String divideHundred(long amount) {
        if (Strings.isNullOrEmpty(String.valueOf(amount))) {
            return "";
        }
        return ((new BigDecimal(String.valueOf(amount)))).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toString();
    }

    /**
     * 金额单位由元转为分,去掉小数点后的数
     *
     * @param amount
     * @return
     */
    public static String multiplyHundred(String amount) {
        if (Strings.isNullOrEmpty(amount)) {
            return "";
        }
        String tmpStr = ((new BigDecimal((String) amount))).multiply(BigDecimal.valueOf(100)).toString();
        return tmpStr.indexOf(".") == -1 ? tmpStr : tmpStr.substring(0, tmpStr.indexOf("."));
    }
}
